1. Technical Field
The present invention relates generally to resource provisioning and auto-provisioning systems, and in particular to a method, system, and product for identifying, reserving, and logically provisioning particular resources in such systems.
2. Description of Related Art
Resource provisioning systems are relatively new types of systems. These systems permit configuration of computing resources that have been selected by a user. The computer resources include servers, firewalls, and software. Once a user has selected a particular resource to be provisioned, the provisioning system will assist in some configurations of the selected resource. For example, if a server with a single network interface is to be placed in a particular virtual local area network (VLAN), the provisioning system will help configure the VLAN on a set of switches and configure the switch port to which the server is connected to be in the VLAN. Existing systems, however, do not provide a method for dynamically and automatically identifying available resources, reserving the resources, and then establishing new relationships among the resources in order to satisfy a resource request.
The process of provisioning resources can be very complex and vary in many different dimensions. The provisioning process for each resource type is different. For example, the processes to configure computer servers are different from the processes to configure network storage devices and software. Even for resources of the same type, there may be many variations. For example, provisioning processes to support software configurations are very different for different software packages.
In a provisioning system, resources can be divided into a number of resource types. This includes, but is not limited to, servers, VLANs, IP addresses, and software. Instances of resources can be categorized by resource type. For example, a server is a type of resource. The particular server having serial number 123456 is a particular individual server and is referred to herein as an “instance” of a server or a “particular” server. Herein, the term “resource” should be understood to mean resource instance.
Furthermore, types of resources can be subdivided by some set of attributes of the resource types. For example, types of servers can be divided into disjoint subsets by server model number. A subset of resource types can be described by its type and subtype, or description of a set of resource attributes. Requests for resources are expressed as requests for instances of a type or subtype of resource.
In addition to membership in a resource type or subtype, resource instances may have predefined relationships with other resource instances of the same or different types. For example, for a server that is already wired into a network, the network interface connector of the server instance has a physical relationship with a switch port instance of a switch instance. Another example would be the relationship between a VLAN instance and a subnet (i.e., a set of IP address instances). These predefined relationships exist because the resource instances are physically related to each other when they are physically connected, as described above in the first example, or are logically connected by defining specific unchanging relationships, as described above in the second example.
Currently, most provisioning systems focus on resource provisioning mechanisms rather than on the identification and reservation of resources with inter-resource relationships. For example, if a server with a single network interface is to be placed in a particular VLAN, the resource provisioning mechanisms provide the methods to configure the VLAN on a set of switches and to configure the switch port to which the server is connected to be in the VLAN. To fulfill a provisioning request, these systems use the notion of server pools. Servers in a pool already have associations with particular resource instances such as particular firewall instances, IP addresses instances, and VLAN instances because these servers are already physically connected to these resources instances as assigned by an administrator, for example, through a graphical user interface (GUI). None of the systems provide programmatic capabilities to dynamically identify or reserve multiple related resource instances to use for a provisioning request.
Changes that should be made to create or modify a requested user environment, using the above described resource provisioning mechanisms, are recorded by creating associations between existing resource representations. The process of creating logical associations between resource representations is called logical provisioning. For example, if a provisioning request specifies that a particular type of software should be installed on a server, the software resource must be logically associated with the server. Another example would be to associate a reserved IP address with the network interface of a reserved server. The logical provisioning indicates what needs to be done and can later be used to drive changes on the physical resources. Again, existing systems do not provide mechanisms to logically provision resources.
Therefore, a need exists for a method, system, and computer program product for dynamically identifying, reserving, and logically provisioning particular resource instances in a provisioning data processing system.